var express = require('express')
var router = express.Router()
var request = require('request')
var WX_INFO = require('./config/index')
let util = require('./utils/util')
let Parser = require('fast-xml-parser')//此包是把jons或obj数据转换成为xml格式，因为微信支付v2版本中发送的数据需要是xml格式。
let J2xParser = Parser.j2xParser
//使用node发送请求向微信服务器，获取openId等
router.get('/getOpenId', (req,res)=>{
    //拿到前端小程序发送过来的code值
    console.log(req.query)
    let code =req.query.code
    request({
        url:'https://api.weixin.qq.com/sns/jscode2session',
        qs:{
            appid:'wx490e6cc97c457e26',//WX_INFO.APP_ID需要商户的appid，否则无法调用支付
            secret: '8e644b327562a7053fce7c9ff2633405',//需要商户的secret，否则无法调用支付
            js_code: code,
            grant_type:'authorization_code'
        }
    },function (err,response,data) {
        if (err){
            console.log(err)
            return err
        }
        res.json(JSON.parse(data))

    })


})
//获取位置支付所需要的prepay_id
router.get('/getPayId', (req,res)=>{
    let Payobj = {
        appid:WX_INFO.APP_ID,//小程序id，你在哪个小程序付的款
        mch_id:WX_INFO.MCH_ID,//商户id，你付款给谁。
        nonce_str:util.getRnd32(),//32位随机字符串
        body: '我付了十个亿', //商品描述
        out_trade_no:util.getTradeNo(),
        total_fee:1,//商品单价，单位是:分,此示列为一分钱。
        spbill_create_ip:util.getIPAdress() ,//终端Ip
        notify_url:'127.0.0.1:3000/wx/success',//通知地址,通知支付成功还是支付失败。暂时随便写个
        trade_type:'JSAPI',//交易类型
        openid: req.query.openid
    }
    Payobj.sign = util.getSign(Payobj,WX_INFO.WX_SHOP_KEY)//最终得到的通过MD5加密的签名
    console.log(JSON.stringify(Payobj)+'@@')
    //将Payobj转成xml
    var j2xParser = new J2xParser()
    let obj = {
        xml:Payobj
    }
    let sendXml = j2xParser.parse(obj)
    console.log(sendXml+'!!')
    // 请求微信统一下单接口
    request({
        method:'POST',
        url:'https://api.mch.weixin.qq.com/pay/unifiedorder',
        from:sendXml
    },(err,response,data)=>{
        if(err) return res.json(err)
        // if(parser.validate(data)){
        //     var resObj = parser.parse((data))
        // }
        // let resJson = {
        //     appId:WX_INFO.APP_ID,
        //     timeStamp: util.getTimeStamp()+'',
        //     nonceStr: Payobj.nonce_str,
        //     package: 'prepay_id'+resObj.xml.prepay_id,
        //     signType:'MD5',
        // }
        // resJson.paySign = util.getSign(resJson,WX_INFO.WX_SHOP_KEY)
        // return  res.json(resJson)
        return  res.json(data)
    })
})
module.exports = router